import { computed, ref } from 'vue'
import { QRCodeAPI } from '@/api'
// 输入类型枚举
export enum InputType {
  TEXT = 'text',
  LINK = 'link',
}

// 响应式数据
export const inputType = ref<InputType>(InputType.TEXT)
export const inputValue = ref('')
export const qrCodeUrl = ref('/static/logo.png') // 默认二维码图片
export const isGenerating = ref(false)

// 计算属性
export const isValidInput = computed(() => {
  const value = inputValue.value.trim()
  if (!value) {
    return false
  }

  if (inputType.value === InputType.LINK) {
    // 简单的URL验证
    const urlPattern = /^(?:https?:\/\/)?[\da-z.-]+\.[a-z.]{2}[/\w .-]*$/
    return urlPattern.test(value)
  }

  return value.length > 0
})

export const inputPlaceholder = computed(() => {
  return inputType.value === InputType.TEXT
    ? '请输入文字内容或链接地址（以http://或https://开头）...'
    : '请输入链接地址（）...'
})

// 切换输入类型
export function switchInputType(type: InputType) {
  inputType.value = type
  inputValue.value = ''
}

// 生成二维码
export async function generateQrCode() {
  if (!isValidInput.value) {
    uni.showToast({
      title: '请输入有效内容',
      icon: 'none',
    })
    return
  }

  isGenerating.value = true

  const params = {
    value: inputValue.value,
    logo: 'https://img.zwfcyy.top/echo-app/logo/er-main.png',
  }
  QRCodeAPI.create(params).then((res) => {
    uni.showToast({
      title: '二维码生成成功',
      icon: 'success',
    })
    qrCodeUrl.value = res
  }).catch((error) => {
    console.error('生成二维码失败', error)
    uni.showToast({
      title: error.message,
      icon: 'none',
    })
  }).finally(() => {
    isGenerating.value = false
  })
}

// 保存二维码
export function saveQrCode() {
  uni.showActionSheet({
    itemList: ['保存到相册', '发送给朋友'],
    success: (res) => {
      if (res.tapIndex === 0) {
        // 保存到相册
        uni.saveImageToPhotosAlbum({
          filePath: qrCodeUrl.value,
          success: () => {
            uni.showToast({
              title: '保存成功',
              icon: 'success',
            })
          },
          fail: () => {
            uni.showToast({
              title: '保存失败',
              icon: 'none',
            })
          },
        })
      }
      else if (res.tapIndex === 1) {
        // 发送给朋友
        uni.showToast({
          title: '功能开发中',
          icon: 'none',
        })
      }
    },
  })
}

// 清空输入
export function clearInput() {
  inputValue.value = ''
}

// 预设快捷内容
export const presetContents = [
  { type: InputType.TEXT, content: '欢迎扫码关注！', label: '欢迎文字' },
  { type: InputType.LINK, content: 'https://www.example.com', label: '示例网站' },
  { type: InputType.TEXT, content: '联系电话：400-123-4567', label: '联系方式' },
  { type: InputType.LINK, content: 'https://github.com', label: 'GitHub' },
]

// 使用预设内容
export function usePresetContent(preset: typeof presetContents[0]) {
  inputType.value = preset.type
  inputValue.value = preset.content
}
